package com.stylefeng.guns.modular.system.dao;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.stylefeng.guns.common.persistence.model.User;
import com.stylefeng.guns.core.datascope.DataScope;

/**
 * 管理员的dao
 *
 * @author fengshuonan
 * @date 2017年2月12日 下午8:43:52
 */
public interface UserMgrDao {

	/**
	 * 修改用户状态
	 *
	 * @param user
	 * @date 2017年2月12日 下午8:42:31
	 */
	int setStatus(@Param("userId") Integer userId, @Param("status") int status);

	/**
	 * 修改密码
	 *
	 * @param userId
	 * @param pwd
	 * @date 2017年2月12日 下午8:54:19
	 */
	int changePwd(@Param("userId") Integer userId, @Param("pwd") String pwd);

	/**
	 * 根据条件查询用户列表
	 *
	 * @return
	 * @date 2017年2月12日 下午9:14:34
	 */
	List<Map<String, Object>> selectUsers(@Param("dataScope") DataScope dataScope, @Param("name") String name, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("deptid") Integer deptid);

	/**
	 * 设置用户的角色
	 *
	 * @return
	 * @date 2017年2月13日 下午7:31:30
	 */
	int setRoles(@Param("userId") Integer userId, @Param("roleIds") String roleIds);

	/**
	 * 通过账号获取用户
	 *
	 * @param account
	 * @return
	 * @date 2017年2月17日 下午11:07:46
	 */
	User getByAccount(@Param("account") String account);

	/**
	 * 
	 * @Description: 清除用户的有效期时间
	 * @param @param userId
	 * @param @return
	 * @return int
	 * @throws
	 * @author xiongyao
	 * @date 2018年3月29日
	 */
	int removeUserExpdate(@Param("userId") Integer userId);

	/**
	 * 
	 * @Description: 设置用户的有效时间
	 * @param @param userId
	 * @param @param expdate
	 * @param @return
	 * @return int
	 * @throws
	 * @author xiongyao
	 * @date 2018年3月29日
	 */
	int setUserExpdate(@Param("userId") Integer userId, @Param("expdate") Date expdate);

	/**
	 * 
	 * @Description: 冻结过期用户
	 * @param @param today
	 * @param @return
	 * @return int
	 * @throws
	 * @author xiongyao
	 * @date 2018年3月29日
	 */
	int freezeUser(@Param("today") String today);
}
